#include "token.h"

// 关键字映射表
const keyword keyword_map[] = {
    // 对象管理
    {"HOOK", TOKEN_HOOK}, {"hook", TOKEN_HOOK},
    
    // 对象类型
    {"TABLE", TOKEN_TABLE}, {"table", TOKEN_TABLE},
    {"KVALOT", TOKEN_KVALOT}, {"kvalot", TOKEN_KVALOT},
    {"LIST", TOKEN_LIST}, {"list", TOKEN_LIST},
    {"BITMAP", TOKEN_BITMAP}, {"bitmap", TOKEN_BITMAP},
    {"STREAM", TOKEN_STREAM}, {"stream", TOKEN_STREAM},
    
    // 操作关键字
    {"DEL", TOKEN_DEL}, {"del", TOKEN_DEL},
    {"TYPE", TOKEN_TYPE}, {"type", TOKEN_TYPE},
    {"RANK", TOKEN_RANK}, {"rank", TOKEN_RANK},
    {"CLEAR", TOKEN_CLEAR}, {"clear", TOKEN_CLEAR},
    {"DESC", TOKEN_DESC}, {"desc", TOKEN_DESC},
    {"GET", TOKEN_GET}, {"get", TOKEN_GET},
    {"WHERE", TOKEN_WHERE}, {"where", TOKEN_WHERE},
    {"TEMP", TOKEN_TEMP}, {"temp", TOKEN_TEMP},
    {"SET", TOKEN_SET}, {"set", TOKEN_SET},
    {"EXISTS", TOKEN_EXISTS}, {"exists", TOKEN_EXISTS},
    {"SELECT", TOKEN_SELECT}, {"select", TOKEN_SELECT},
    {"KEY", TOKEN_KEY}, {"key", TOKEN_KEY},
    {"INSERT", TOKEN_INSERT}, {"insert", TOKEN_INSERT},
    {"FIELD", TOKEN_FIELD}, {"field", TOKEN_FIELD},
    {"ADD", TOKEN_ADD}, {"add", TOKEN_ADD},
    {"SWAP", TOKEN_SWAP}, {"swap", TOKEN_SWAP},
    {"ATTRIBUTE", TOKEN_ATTRIBUTE}, {"attribute", TOKEN_ATTRIBUTE},
    {"POS", TOKEN_POS}, {"pos", TOKEN_POS},
    {"APPEND", TOKEN_APPEND}, {"append", TOKEN_APPEND},
    {"LEN", TOKEN_LEN}, {"len", TOKEN_LEN},
    {"LPUSH", TOKEN_LPUSH}, {"lpush", TOKEN_LPUSH},
    {"RPUSH", TOKEN_RPUSH}, {"rpush", TOKEN_RPUSH},
    {"LPOP", TOKEN_LPOP}, {"lpop", TOKEN_LPOP},
    {"RPOP", TOKEN_RPOP}, {"rpop", TOKEN_RPOP},
    {"COUNT", TOKEN_COUNT}, {"count", TOKEN_COUNT},
    {"COPY", TOKEN_COPY}, {"copy", TOKEN_COPY},
    {"MOVE", TOKEN_MOVE}, {"move", TOKEN_MOVE},
    {"MERGE", TOKEN_MERGE}, {"merge", TOKEN_MERGE},
    {"SPLIT", TOKEN_SPLIT}, {"split", TOKEN_SPLIT},
    {"EXPORT", TOKEN_EXPORT}, {"export", TOKEN_EXPORT},
    {"IMPORT", TOKEN_IMPORT}, {"import", TOKEN_IMPORT},
    {"SUBSCRIBE", TOKEN_SUBSCRIBE}, {"subscribe", TOKEN_SUBSCRIBE},
    {"UNSUBSCRIBE", TOKEN_UNSUBSCRIBE}, {"unsubscribe", TOKEN_UNSUBSCRIBE},
    {"NOTIFY", TOKEN_NOTIFY}, {"notify", TOKEN_NOTIFY},
    {"LOCK", TOKEN_LOCK}, {"lock", TOKEN_LOCK},
    {"UNLOCK", TOKEN_UNLOCK}, {"unlock", TOKEN_UNLOCK},
    {"COMMIT", TOKEN_COMMIT}, {"commit", TOKEN_COMMIT},
    {"ROLLBACK", TOKEN_ROLLBACK}, {"rollback", TOKEN_ROLLBACK},
    {"ASYNC", TOKEN_ASYNC}, {"async", TOKEN_ASYNC},
    {"SYNC", TOKEN_SYNC}, {"sync", TOKEN_SYNC},
    {"WAIT", TOKEN_WAIT}, {"wait", TOKEN_WAIT},
    {"RENAME", TOKEN_RENAME}, {"rename", TOKEN_RENAME},
    {"CHMOD", TOKEN_CHMOD}, {"chmod", TOKEN_CHMOD},
    {"MULTI", TOKEN_MULTI}, {"multi", TOKEN_MULTI},
    {"EXEC", TOKEN_EXEC}, {"exec", TOKEN_EXEC},
    {"EXPIRE", TOKEN_EXPIRE}, {"expire", TOKEN_EXPIRE},
    {"PERSIST", TOKEN_PERSIST}, {"persist", TOKEN_PERSIST},
    {"TTL", TOKEN_TTL}, {"ttl", TOKEN_TTL},
    {"INCR", TOKEN_INCR}, {"incr", TOKEN_INCR},
    {"DECR", TOKEN_DECR}, {"decr", TOKEN_DECR},
    {"KEYS", TOKEN_KEYS}, {"keys", TOKEN_KEYS},
    {"FLIP", TOKEN_FLIP}, {"flip", TOKEN_FLIP},
    {"FILL", TOKEN_FILL}, {"fill", TOKEN_FILL},
    {"FIND", TOKEN_FIND}, {"find", TOKEN_FIND},
    {"AND", TOKEN_AND}, {"and", TOKEN_AND},
    {"OR", TOKEN_OR}, {"or", TOKEN_OR},
    {"XOR", TOKEN_XOR}, {"xor", TOKEN_XOR},
    {"NOT", TOKEN_NOT}, {"not", TOKEN_NOT},
    {"SHIFT", TOKEN_SHIFT}, {"shift", TOKEN_SHIFT},
    {"RESIZE", TOKEN_RESIZE}, {"resize", TOKEN_RESIZE},
    {"JOIN", TOKEN_JOIN}, {"join", TOKEN_JOIN},
    {"REVERSE", TOKEN_REVERSE}, {"reverse", TOKEN_REVERSE},
    {"SORT", TOKEN_SORT}, {"sort", TOKEN_SORT},
    {"UNIQUE", TOKEN_UNIQUE}, {"unique", TOKEN_UNIQUE},
    {"SYSTEM", TOKEN_SYSTEM}, {"system", TOKEN_SYSTEM},
    {"INFO", TOKEN_INFO}, {"info", TOKEN_INFO},
    {"STATUS", TOKEN_STATUS}, {"status", TOKEN_STATUS},
    {"REGISTER", TOKEN_REGISTER}, {"register", TOKEN_REGISTER},
    {"CLEANUP", TOKEN_CLEANUP}, {"cleanup", TOKEN_CLEANUP},
    {"BACKUP", TOKEN_BACKUP}, {"backup", TOKEN_BACKUP},
    {"RESTORE", TOKEN_RESTORE}, {"restore", TOKEN_RESTORE},
    {"LOG", TOKEN_LOG}, {"log", TOKEN_LOG},
    {"ZS", TOKEN_ZS}, {"zs", TOKEN_ZS},
    
    // 类型关键字
    {"i1", TOKEN_i1}, {"int8_t", TOKEN_i1},
    {"i2", TOKEN_i2}, {"int16_t", TOKEN_i2},
    {"i4", TOKEN_i4}, {"int32_t", TOKEN_i4}, {"int", TOKEN_i4},
    {"i8", TOKEN_i8}, {"int64_t", TOKEN_i8},
    {"ui1", TOKEN_ui1}, {"uint8_t", TOKEN_ui1},
    {"ui2", TOKEN_ui2}, {"uint16_t", TOKEN_ui2},
    {"ui4", TOKEN_ui4}, {"uint32_t", TOKEN_ui4},
    {"ui8", TOKEN_ui8}, {"uint64_t", TOKEN_ui8},
    {"f4", TOKEN_f4}, {"float", TOKEN_f4},
    {"f8", TOKEN_f8}, {"double", TOKEN_f8},
    {"str", TOKEN_str}, {"string", TOKEN_str},
    {"date", TOKEN_date},
    {"time", TOKEN_time},
    {"datetime", TOKEN_datetime},
    {"bool", TOKEN_bool},
    {"blob", TOKEN_blob},
    
    // 键关键字
    {"PKEY", TOKEN_PKEY}, {"pkey", TOKEN_PKEY},
    {"FKEY", TOKEN_FKEY}, {"fkey", TOKEN_FKEY},
    {"NOTNULL", TOKEN_NOTNULL}, {"notnull", TOKEN_NOTNULL},
    {"DEFAULT", TOKEN_DEFAULT}, {"default", TOKEN_DEFAULT},
    {"INDEX", TOKEN_INDEX}, {"index", TOKEN_INDEX},
    {"AUTO_INCREMENT", TOKEN_AUTO_INCREMENT}, {"auto_increment", TOKEN_AUTO_INCREMENT},
    
    // 条件关键字
    {"IF", TOKEN_IF}, {"if", TOKEN_IF},
    {"ELSE", TOKEN_ELSE}, {"else", TOKEN_ELSE},
    {"ELIF", TOKEN_ELIF}, {"elif", TOKEN_ELIF},
    {"ENDIF", TOKEN_ENDIF}, {"endif", TOKEN_ENDIF},
    {"WHILE", TOKEN_WHILE}, {"while", TOKEN_WHILE},
    {"ENDWHILE", TOKEN_ENDWHILE}, {"endwhile", TOKEN_ENDWHILE},
    {"FOR", TOKEN_FOR}, {"for", TOKEN_FOR},
    {"ENDFOR", TOKEN_ENDFOR}, {"endfor", TOKEN_ENDFOR},
    {"END", TOKEN_END}, {"end", TOKEN_END},
    {"BREAK", TOKEN_BREAK}, {"break", TOKEN_BREAK},
    {"CONTINUE", TOKEN_CONTINUE}, {"continue", TOKEN_CONTINUE},
    
    //逻辑关键字 - 删除重复的AND、OR、NOT定义
    {"IN", TOKEN_IN}, {"in", TOKEN_IN},
    {"BETWEEN", TOKEN_BETWEEN}, {"between", TOKEN_BETWEEN},
    {"LIKE", TOKEN_LIKE}, {"like", TOKEN_LIKE},
    {"IS", TOKEN_IS}, {"is", TOKEN_IS},
    {"NULL", TOKEN_NULL}, {"null", TOKEN_NULL},
    
    //其他关键字
    {"ASC", TOKEN_ASC}, {"asc", TOKEN_ASC},
    {"DESC", TOKEN_DESC_ORDER}, {"desc", TOKEN_DESC_ORDER},
    {"LEFT", TOKEN_LEFT}, {"left", TOKEN_LEFT},
    {"RIGHT", TOKEN_RIGHT}, {"right", TOKEN_RIGHT},
    {"MATHS", TOKEN_MATHS}, {"maths", TOKEN_MATHS},
    {"SIZE", TOKEN_SIZE}, {"size", TOKEN_SIZE},
    {"CREATE", TOKEN_CREATE}, {"create", TOKEN_CREATE},
    {"WARN", TOKEN_WARN}, {"warn", TOKEN_WARN},
    {"ERROR", TOKEN_ERROR}, {"error", TOKEN_ERROR},
    {"JSON", TOKEN_JSON_FORMAT}, {"json", TOKEN_JSON_FORMAT},
    {"CSV", TOKEN_CSV}, {"csv", TOKEN_CSV},
    {"BINARY", TOKEN_BINARY}, {"binary", TOKEN_BINARY},
    {"PATTERN", TOKEN_PATTERN}, {"pattern", TOKEN_PATTERN},
    {"MICROSECONDS", TOKEN_MICROSECONDS}, {"microseconds", TOKEN_MICROSECONDS},
    {"DIRECTION", TOKEN_DIRECTION}, {"direction", TOKEN_DIRECTION},
    {"FORMAT", TOKEN_FORMAT}, {"format", TOKEN_FORMAT},
    {"DATA", TOKEN_DATA}, {"data", TOKEN_DATA},
    {"PATH", TOKEN_PATH}, {"path", TOKEN_PATH},
    {"LEVEL", TOKEN_LEVEL}, {"level", TOKEN_LEVEL},
    {"TIMEOUT", TOKEN_TIMEOUT}, {"timeout", TOKEN_TIMEOUT},
    {"MODE", TOKEN_MODE}, {"mode", TOKEN_MODE},
    {"STEP", TOKEN_STEP}, {"step", TOKEN_STEP},
    {"START", TOKEN_START}, {"start", TOKEN_START},
    {"OFFSET", TOKEN_OFFSET}, {"offset", TOKEN_OFFSET},
    {"VALUE", TOKEN_VALUE}, {"value", TOKEN_VALUE},
    {"CONDITION", TOKEN_CONDITION}, {"condition", TOKEN_CONDITION},
    {"VAR", TOKEN_VAR}, {"var", TOKEN_VAR},
    
    // 符号必须在关键字数组中连续排列,且">"放第一个
    {">", TOKEN_DY}, {"<", TOKEN_XY},
    {">=", TOKEN_DYDY}, {"<=", TOKEN_XYDY},
    {"==", TOKEN_DDY}, {"!=", TOKEN_BDY},
    {"~=", TOKEN_YDY}, {"<>", TOKEN_BJ},
    {"><", TOKEN_JJ}
};
